package net.terror;

import net.fabricmc.api.ModInitializer;
import net.minecraft.text.Text;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.entity.mob.HostileEntity;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class ProjetoTerror implements ModInitializer {
    public static final String MOD_ID = "projeto_terror";

    @Override
    public void onInitialize() {
        System.out.println("[Projeto Terror] Mod inicializado com sucesso!");
    }

    // IA DO MONSTRO: Roda a cada instante (tick) do jogo
    public static void atualizarIA(HostileEntity monstro, ServerPlayerEntity jogador) {
        if (monstro == null || jogador == null) return;

        // 1. Deixa o monstro SUPER RÁPIDO (Velocidade do Flash)
        monstro.setSpeed(0.6F); // O padrão de um zumbi comum é 0.23F

        // 2. Calcula a distância exata em blocos entre o monstro e o jogador
        double distancia = monstro.distanceTo(jogador);
        int blocosRestantes = (int) Math.round(distancia);

        // 3. RADAR DE PROXIMIDADE: Avisa no chat a distância que ele está vindo
        if (blocosRestantes > 0 && blocosRestantes <= 30) {
            // Avisa em vermelho no meio da tela (estilo Actionbar)
            String mensagemRadar = "§c[RADAR] O bicho esta a " + blocosRestantes + " blocos de voce!...";
            jogador.sendMessage(Text.literal(mensagemRadar), true); 
        }

        // 4. JUMPSCARE: Se ele encostar no jogador (menos de 1.5 bloco de distância)
        if (distancia <= 1.5) {
            // Manda as mensagens falsas no chat
            enviarMensagensAssustadoras(jogador);
            // Cria a pasta criptografada e o susto na Área de Trabalho do PC real!
            criarPastaAssustadora();
        }
    }

    // FUNÇÃO DO JUMPSCARE NO PC: Cria a pasta criptografada na Área de Trabalho
    public static void criarPastaAssustadora() {
        String userHome = System.getProperty("user.home");
        String caminhoDesktop = userHome + File.separator + "Desktop" + File.separator + "Vk9DRV9OQU9fREVWSUFfRVNUQVJfQVFVSQ==";

        File novaPasta = new File(caminhoDesktop);
        if (!novaPasta.exists()) {
            novaPasta.mkdirs();
            
            File arquivoTexto = new File(novaPasta, "leia-me.txt");
            try (FileWriter writer = new FileWriter(arquivoTexto)) {
                writer.write("Eu vi o que voce fez no Minecraft.\nOlhe para tras.");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    // MENSAGENS FALSAS DO CHAT
    public static void enviarMensagensAssustadoras(ServerPlayerEntity jogador) {
        // Simula alguém entrando no servidor (Mensagem amarela clássica do Minecraft)
        String textoEntrada = "§eEntity_X joined the game";
        jogador.sendMessage(Text.literal(textoEntrada), false);

        // O monstro manda uma mensagem criptografada para traduzir ("NAO HÁ ESCAPATORIA")
        String textoMonstro = "<Entity_X> TktPIEjBIEVTQ0FQQVRPUklB";
        jogador.sendMessage(Text.literal(textoMonstro), false);
    }
}
